package com.ysq.www.api.front.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ysq.www.api.front.entity.Information;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ysq.www.common.result.ResultMsg;

/**
 * <p>
 * 资讯表 服务类
 * </p>
 *
 * @author dql
 * @since 2020-08-07
 */
public interface IInformationService extends IService<Information> {

    /**
     * 首页分页查询最新资讯
     * @param pageNumber 页码
     * @param pageSize 页大小
     * @param userId 用户id
     * @param asId 协会id
     * @return IPage
     */
    IPage<Information> searchByPage(int pageNumber, int pageSize, Integer userId, Integer asId);

    /**
     * 提交资讯
     * @param im 资讯实体对象
     * @return ResultMsg
     */
    ResultMsg addInformation(Information im);

    /**
     * 查询资讯详情
     * @param imId 资讯id
     * @param userId 用户id
     * @return Information
     */
    Information selectDetailById(Integer imId, Integer userId);

    /**
     * 待办分页查询我发起的资讯
     * @param userId 发起人id
     * @param pageNumber 页码
     * @param pageSize 页大小
     * @param time 日期
     * @return IPage
     */
    IPage<Information> selectSponsorByPage(Integer userId, Integer pageNumber, Integer pageSize, String time);

    /**
     * 分页查询待处理/已处理资讯
     * @param userId 审批人id
     * @param type 类型：0未处理，1已处理
     * @param pageNumber 页码
     * @param pageSize 页大小
     * @param time 日期
     * @return IPage
     */
    IPage<Information> selectPendingByPage(Integer userId, Integer type, Integer pageNumber, Integer pageSize, String time);

    /**
     * 分页查询抄送至我的资讯
     * @param userId 用户id
     * @param pageNumber 页码
     * @param pageSize 页大小
     * @param time 日期
     * @return IPage
     */
    IPage<Information> selectCopyToMeByPage(Integer userId, Integer pageNumber, Integer pageSize, String time);

    /**
     * 处理审批资讯
     * @param imId 资讯ID
     * @param result 处理结果：1通过，2驳回
     * @return ResultMsg
     */
    ResultMsg checkInformationById(Integer imId, Integer result);

    /**
     * 撤销提出但还未处理的资讯
     * @param imId 资讯id
     * @return ResultMsg
     */
    ResultMsg repealInformationById(Integer imId);

}
